package com.ljy.my_study.lintcode.空格替换;

import java.util.Arrays;
import java.util.List;

/** 
* @author James
* @date 2018年9月28日 
*/
public class TestMain {
//	设计一种方法，将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符，且你得到的是“真实的”字符长度。
//
//	你的程序还需要返回被替换后的字符串的长度。
//
//	样例
//	对于字符串"Mr John Smith", 长度为 13
//
//	替换空格之后，参数中的字符串需要变为"Mr%20John%20Smith"，并且把新长度 17 作为结果返回。
//
//	挑战
//	在原字符串(字符数组)中完成替换，不适用额外空间
//
//	注意事项
//	如果使用 Java 或 Python, 程序中请用字符数组表示字符串。
	public static void main(String[] args) {
		String ss="hello world james";
		Character[] cArr=getCharArr(ss);
		System.out.println(replaceBlank(cArr,17));
		List<Character> cList=Arrays.asList(cArr);
		System.out.println(cList);
	}
	
	private static Character[] getCharArr(String ss) {
		Character[] cArr=new Character[30];
		char[] ssArr=ss.toCharArray();
		for(int i=0;i<ssArr.length;i++) {
			cArr[i]=ssArr[i];
		}
		return cArr;
	}
	
	public static int replaceBlank(Character[] cArr, int length) {
		for(int i=0;i<length;) {
			char c=cArr[i];
			if(c==' ') {
				for(int j=length-1;j>i;j--) {
					cArr[j+2]=cArr[j];
				}
				cArr[i]='%';
				cArr[i+1]='2';
				cArr[i+2]='0';
				i+=3;
				length+=2;
			}else {
				i++;
			}
		}
		return length;
	}
}
